import librosa
import logging
import timeit

class Reader:
    """
    读取训练集的输入音频文件
    file_name: 'path/to/file/filename.ogg'
    """
    
    def __init__(self, file_name):
        self.file_name = file_name
        pass

    def read_audio_file(self):
        """
        读取音频文件

        :return:
        * audio_data 为 numpy.ndarray。返回一个二维 NumPy 数组，其中通道存储在第一维，即列中。如果声音文件只有一个通道，则返回一个一维数组。
        * sr 为 int。音频文件的采样率 [Hz]
        """

        logging.info('Reading file: {0} ...'.format(self.file_name))

        start = timeit.default_timer()
        try:
            audio_data, sr = librosa.load(self.file_name, sr=44100, mono=True, duration=5)
        except Exception as e:
            logging.error(f"Failed to load audio file: {e}")
            raise
        
        stop = timeit.default_timer()

        logging.info('Time taken: {0}'.format(stop - start))

        return audio_data, sr
